In recent years more and more providers have begun providing the ability to create computing environments in the cloud. For example, Amazon Web Services™ (also known as AWS) launched in 2006 a service that provides users with the ability to configure an entire environment tailored to an application executed over the cloud platform. In general, such services allow developing scalable applications in which computing resources are utilized to support efficient execution of the application. To this end, a programmer (a user of the cloud-computing environments) can define the computing resources, such as servers, web servers, routers, storage, load balancers, firewalls, backup, and connectivity as may be desired. Services for creating computing environments in the cloud allow dynamic changes to the set of computing resources and their configurations. This may include adding components or removing components from the configured environment as may be necessary, as well as changes to other configurations of the environment and changes to the configuration of each component.
Organizations and businesses that develop, provide, or otherwise maintain cloud based applications have become accustomed to relying on these services and implementing various types of environments from complex web sites to data mining systems and much more. However, there is a challenge as greater reliance is made on such systems, since such systems have to maintain a very high up-time and any failure may become highly problematic and/or costly to a user of the system. That is, there is a requirement to allow for business continuity. For example, for an e-commerce application executed in a cloud-based environment, any down time of such application means revenue lost. As a result, providers of such applications often utilize measures to ensure continuity of operations by backing up information that is relevant to maintaining operations.
While the providers of such cloud-based environments provide various backup capabilities that automatically or semi-automatically store data from one computer in another storage space that is separate from the computer, those providers still rely on the user to address these issues effectively. Therefore, in order to ensure continuous operations of the application, mirror or backup environments are manually created by the application developer or application owner. In addition, any changes made to the primary environment must be manually updated in the backup environment.
For example, when a machine allocated in the cloud-environment for execution of the application includes certain firewall configuration parameters, these parameters have to be copied manually to the respective backup machine if the user or provider desires that such parameters be identical in character to those of the backed-up machine. Additionally, while coherency maintenance between machines (such as physical and/or virtual machines) is well within the realm of existing solutions, cloud service providers do not currently support coherency maintenance for other computing resources such as load balancers. A solution that periodically backs up data of a machine by way of taking a snapshot and storing such data would be desired. This solution would enable reconstruction of the data in case of failure or when otherwise needed.
Therefore, the disadvantages of prior art solutions are quite obvious. At all times, it is necessary to maintain a full copy of the cloud-based computing environment (CBCE). That is, both machines and services, in at least another cloud environment or platform.
It would be therefore advantageous to provide an efficient solution for maintaining the ability to create a redundant CBCE in case of a failure of a primary CBCE.